4 April 1997: Note added on prior restraint.
3 April 1997: Machine-readable code deleted at request of attorneys for Plaintiff and Defendants.
2 April 1997


Tab B


Computers and the Law

Peter D. Junger

Fall, 19961

1 This still very tentative edition is being assembled as the course is being taught, so the work is a product, not only of the author, but of the students who took the course in Computers and the Law at CWRU Law School in 1993 through 1995 and those who are now taking it in 1996.


1.1. CAUTION: THIS BOOK MAY BE DANGEROUS!!!             9

In a moment, we are going to look at some of the provisions of the ITAR to see if we can make some sense out of them, but before we can do that we do need to understand a few basic facts about computers and computer software. The problems with the ITAR are likely to disappear with a judicial holding that the portion of those regulations relating to cryptographic software is unconstitutional. There are other problems that arise from the peculiar nature of computers and computer programs that are much more important, and likely to be with us for a much longer time.

1.1.3.1 What Makes Computers Different?

We tend to think of computers as being something new, something that did not exist before World War II or, for any practical purposes, before the 1950's; but this is not quite correct. There used to be computers back in those days, only they were human beings, not machines.l Computers were people who did numerical calculations and were often, for example, employed by oil companies to assist seismologists in their efforts to convert the data that they obtained by reflecting sound waves underground into maps of the geological structures that caused the reflections.2 The scientists at the Manhattan Project during World War II required extensive mathematical calculations in order to design the atomic bomb, and they were able to do those calculations without anything more complicated than old fashioned mechanical calculators: they simply divided the large calculations into many small ones and then hired a large number of temporary workers to do the small computations using desktop mechanical calculators. I do not know if those workers were called computers--they probably weren't--but the calculations that they performed as a group are an example of the type of problem that today would be solved by using a digital computer.3

___________________________

1 One of the consequences of the development of computers has been to blur the traditional distinction between man and machine; there is, for example, a whole new, if ill-defined, field called cognitive science whose practitioners try to model the processes of human thought as if they were running on a computer. Of course, in the days before computers there was a tendency to try to explain human behavior using mechanical metaphors--Freud with his "drives" was clearly influenced by steam engines and hydrological processes--; the difference is that the "cognitive" computer-based models are easier to take seriously. We all know that no one has a steam engine in their head, but there is room there for a computer.

2 During one summer while I was in Law School I worked as a gravity observer on an oil exploration crew in the Northwest Territories and spent a couple of evenings with a slide rule double-checking calculations for the computer, who spoke with a Scots accent. I cannot say that I have ever been a computer, but I have been a computer's assistant. I doubt, however, that that helps me in understanding what it is that computers do.

3 This example actually involves parallel processing since each worker was a separate processor and the complex problem was broken into smaller problems that those processors could solve in parallel; there are today digital computers with many processors that can perform this sort of parallel calculations (but any problem that can be solved by parallel processing can also be solved (but perhaps much more slowly) by a digital computer with a single central processing unit). Recently it has become possible to link together many personal computers or work stations in parallel so that they can jointly solve problems that otherwise would take a large supercomputer. This type of distributed parallel processing is sometimes used to de-


10                                                                            CHAPTER 1. INTRODUCTION

__________________________________________________________________

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants

__________________________________________________________________
Figure 1.2: The UUENCODEd Encryption Program (Machine Code)

The fact that computers used to be human is not just an interesting historical oddity: one of the most significant characteristics of computers is that they do things that used to be done only by people.

Now, of course, that statement isn't very surprising; after all backhoes, too, do things that used to be done by ditch diggers, and traditionally ditch diggers were people, not machines.

The critical distinction then is that backhoes are tools that assist digging, while computers are tools that assist us in thinking.

But we have had tools to assist us in thinking for millenia: for example, paper, pens, knotted strings, tallies, abaci, slide rules, and mechanical calculators. If those tools for thinking have not caused serious legal problems,4 why should computers be different?

Well, the answer is that computers differ from pens and printing presses (or backhoes, for that matter) in the same way that human computers or the workers with their mechanical calculators (or ditch diggers) do.5 Human beings and modern digital computers (and dogs and horses and elephants and perhaps even cats) are to some degree or another programmable; they are capable of obeying instructions. That is an important way that they differ from other means of accomplishing ends.

_______________________

crypt encrypted messages by brute force. The way to protect against this type of attack on one's privacy is to use a longer key, but the office of Defense Trade Controls uses the threat of prosecution under the ITAR to make it very difficult to obtain programs that do have longer keys.

4 The assumption here is actually misleading; I am sure that many legal problems that have existed since ancient days did not arise until the invention of writing or of tallies. And the legal problems that we associate with both copyright and censorship of the press did not arise until the invention of the printing press and that greatest of tools for thought, the book.

5 That difference does not turn on the humanity of the computers or ditch diggers; from the point of view of those who employ them, they are just tools, and not some sort of Kantian end in themselves.

February 3, 1997


1.1. CAUTION: THIS BOOK MAY BE DANGEROUS!!!             11


__________________________________________________________________

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants

__________________________________________________________________
Figure 1.3: The Encryption Program in Hexadecimal 8086 Machine Code as Produced by the MASM Assembler (read from left to right)

So the critical difference between computers and other tools is the fact that computers are programmable tools that we use for assistance in thinking. I am under the impression that most of the hairy legal problems that have arisen out of the use of computers arise because computers are prograMMable. That is, the problems arise from the programs, not from the computers themselves.

1.1.3.1.1 What Is a Program? "What is a program" is not an easy question to answer. in part because it is hard to say whether a program is a "static" thing or a dynamic "process". One can say that a computer program is the "code" that is written by a programmer, which we can read and perhaps even understand, but one can also say that a program is the series of steps that the computer takes when it "runs" the program. It is as if the word "recipe" meant both the instructions in a recipe book and the actual steps that a cook performs when cooking a dish. Even if we limit the meaning of the term to the "text" of the program, there is still a whopping ambiguity: does one mean the text as written by the programmer? For example, the source code that I wrote for my tiny encryption program that is set out in its entirety in Section 1.1.3.2.21 Or the text--the instructions--that are carried out by the computer? For example the machine code for the same program that is set out in various encodings2 in Figures 1.1.-

___________________________

1 For another example of a program in this sense, see the source code for Paul C. Leyland's C program in Figure 1.4, a program that is functionally equivalent to my assembly language program.

2 There is no easy way to represent the actual machine instructions as they are processed by a computer since the those instructions normally take the form of a series of variations in voltage levels of the transistors within the machine--or something like that. Perhaps the most accurate representation would be one that showed the instructions as a binary number, but I have not included such a representation of the machine code in this section of these materials. We will look at numerical representations--including binary numbers--when we study the patentability of algorithms.


12                                                                            CHAPTER 1. INTRODUCTION

__________________________________________________________________

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants

__________________________________________________________________
Figure 1.4: Paul C. Leyland's Encryption Program in ANSII C

1.3 below?

Even in cases where the code that is "executed" by the machine appears to be identical with the instructions that are written by the programmer, as is the case with interpreted languages like BASIC, there is a radical difference between the source code and the instructions that are actually executed by the computer. In such cases the source code is merely data that is processed by another computer program called an interpreter, and it is the output of the interpreter that actually constitutes the machine code of the interpreted program.

Source code and representations of machine code share one thing in common: they are texts that are readable--if not comprehensible--by human beings. But the actual machine code is not a text, even if one looks at it statically; the "machine code" is nothing more--or less--than the settings of certain switches within the physical computer. We may interpret those settings--or representations, i.e., mappings--as if they were a text to be understood, but that is not their function within a computer. Within a computer they simply determine that computer's physical state. It hardly makes sense, moreover, to speak of the settings of those switches in static terms, since--if the computer is running--the switches are changing from instant to instant. When a computer program starts running, the machine's switches are in a certain state, and that state (plus the state of the "data"3 within the machine) determines what the computer does next and what its next state will be.

From our point of view source code--the code written by a human being--, or even machine code, can be seen as a description of a machine; but from the machine's point of view ....

Only machines don't have a point of view.

From our point of view source code, or even machine code, can be seen either as a description of the behavior of a machine or as that behavior itself. As a description it may influence our mental behavior (and the behavior of the machine may in turn influence our mental behavior); but nothing influences the machine's mental behavior. The machine does not have any mental behavior.

As I said, it is the failure to distinguish between these radically different meanings of the words "program" or "code" that seems to be responsible for most of the confusion that afflicts our subject.

_________________________

3 For these purposes, the "data" cannot be distinguished from the "machine code"; both are necessary determinants of the next state of the machine.

February 3, 1997


1.1. CAUTION: THIS BOOK MAY BE DANGEROUS!!!             13

1.1.3.1.2 Information and Digits and Ordering Another critical difference between computers and other tools (including animate ones) is that general purpose computers--machines like IBM PC's and their clones and Vaxen and Unix boxes--in the strict sense1 do nothing but manipulate digital information.

This point also causes a lot of confusion and is undoubtedly responsible for many of the difficulties that arise when an attempt is made to patent software: a subject on which we will be spending considerable time.

From either a practical or a legal point of view,2 what computers do is far more important than what computers are.3 And what computers do is process (or order4) digital5 information.

This means that any lawyer who works with "computer law" should have some idea what digital information is.

We all probably think we know what "information" is; but I, at least find it difficult to describe, except in negative terms. "Information" is not "meaning", . . .and it is not "knowledge" and certainly not "wisdom". Information can be processed by a computer, but the computer has no idea of the meaning of "meaning", or of "knowledge", or "wisdom", or even of the "information" that it processes.

It is easier to explain what "digital information" is.

"Digital" is the adjectival form of the word "digit" and a digit is a finger. At least, "finger" is the original meaning of "digit". We have ten digits, and that is why we use a base ten numbering system. But if we were constrained to use only our actual digits we could not count very far (without taking our shoes off). So someone, in the dim, dark days before history, invented6 the idea of using marks instead of fingers. Thus, instead of holding out three fingers, one could just make three marks, like this: "iii", and for twelve fingers (which most people don't actually have) one could just use twelve marks, like this "iiiiiiiiiiii". And these artificial digits convey the information that there are three "things" ( "little

_______________________

1 In this sense computers do not print out casebooks or show you pretty pictures on their screens; they merely send digital information to a printer or to the screen, and it is the printer or the screen that prints the book or shows the picture in response to the information from the computer.

2 And there is not, one hopes, a great deal of difference between these viewpoints.

3 Computers are a collection of wires and transistors and things and are about the size of a bread box.

4 The French call computers "ordinateurs", which is a pretty good name for them. Computers are not, after all, used primarily for computation, though that is still an important application.

5 In this course we shall not be concerned with analog computers, if only because such computers have not generated any particular legal problems that I know of. We shall also have little occasion to deal with "neural-network" computers, whether or not they are considered to be analog devices, except to note that they are trainable, but not programmable in the way that ordinary digital computers with central processing units are.

6 If our current patent law had been in force at that time, would this invention have been patentable?


14                                                                            CHAPTER 1. INTRODUCTION

pigs", for example) and twelve "things" ("days of Christmas", for example). The digital information in these examples just tells us what the number of the things is, it does not tell us what the things are; that we have to figure out from the context.

But even that overstates the case. We know that "iii" represents the very abstract concept that we have of "the number three", a concept that we also represent by the numeral "3". But the only information that is contained in "iii" is that there are three digits, three marks. The only information contained in "iii" is iii.7

In time we--i.e. members of the human species--invented other marks to stand for a series of digits. Thus we nowadays write "iiiii" as "v" or, more often, as "5". But this practice requires some knowledge on our part: we have to know that "5" means "iiiii". But computers don't know things, and they certainly don't know the meaning of things. So computers cannot deal with numerals like "5"; all they can deal with are digits like "iiiii". Of course, that "iiiii" is just a humanly readable representation of the actual "digits" inside the machine; the "digits", the information, inside the machine consists of five particular switches (or transistors) that are switched on (or are in the "on" state). One can do a one-to-one mapping of the state of those five switches onto the digits in the string "iiiii" (and vice versa); in that sense the switches and "iiiii" contain the same information (or, at least, the same amount of information). as does "11111".8

But one repeatable symbol like "i" or "1", though it suffices to count the number of switches that are turned on in a computer, is not sufficient to convey information about the state of those switches. The switches may be either on or off, and to represent this fact one needs two different marks, two different digits, one for on, and another for off. Traditionally these two marks are written "1" and "0", though they might just as well be written "T" and "F" or "y" and "n "or even "apple" and "orange".

Since the switches in a computer just have two states, off and on (or "0" and "1"), it is customary to call them "binary digits" or just "bits". A row (or string) of four switches in a computer thus contains four bits; taking their order into account, the possible states of those four bits can be represented as "0000", "0001", "0010", "0100", "1000", etc., all the way up to "1111", so that the ordered string of bits actually contains more than four bits of information. If you write all the possible combinations down you will see that an ordered four- bits of information can represent sixteen different patterns.9 And an ordered eight bits (eight bits is often called a "byte") contains 256 different possible permutations or patterns, each of which can be interpreted as representing a different character.

_____________________

7 Or is it the other way around?

8 Does that last symbol mean five? Or does it mean eleven thousand one hundred and eleven?

9 Some of you are already aware of the fact that a string of n bits contains 2n bits of information, but are you really aware of why this is so or what the implications are?

February 3, 1997


1.1. CAUTION: THIS BOOK MAY BE DANGEROUS!!!             15

__________________________________________________________________

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants

__________________________________________________________________

Figure 1.5: The UUENCODEd Key

But the computer is just a machine, and it does not interpret those patterns of ordered bits, nor does it interpret anything else. The computer does not know, or care, whether the nibble (that's half a byte) "1111" represents "4" in decimal notation, or "15" in decimal notation (which is "F" in hexadecimal notation and "77" in octal notation), or something else. The ordering of the bits in the computer is extremely important from our point of view, but the computer knows nothing of order, or of bits. The computer knows nothing.

But even though a computer has no more knowledge than a rock, it can still be used by us to process information, and to do that in ways that are more subtle than merely throwing a rock at someone's head.

What computers do--and this is what makes them so useful--is change the patterns of their switches in accordance with our instructions; that is, in accordance with the programs (and the other data) that we feed into them, directly or indirectly, in the form of a stream10 of bits.

1.1.3.1.3 The Logic of Computer Programs. Basically all that a computer does is suck a stream of bits (or several streams of bits) into its central processing unit and spit out another stream of bits (that we interpret as some sort of permutation or encoding of the input stream).

Despite the fact that we call them computers, computers have considerable difficulty in performing what we interpret as arithmetical operations. Their real strength lies in their ability to transform information using logical operations.l

_______________________

10 When we look at a program, we see a static string of alphanumeric characters; but the computer acts on the program as a dynamic stream of bits flowing in and out its central processing unit.

1 The basic operations of a computer are logical operations. In fact, the basic operation of a computer, other than simply moving bits from one place to another, is often the single logical operation known as "NAND" (which is short for NOT AND). All other logical operations can be performed as a series of NAND operations.


16                                                                            CHAPTER 1. INTRODUCTION

Even if you are not familiar with the way that computers work, you are still familiar with the sort of logical operations--they are called Boolean operations--that computers use. When you do a Lexis or a Westlaw search, the AND and OR and NOT commands that you use to tell the computer what search for are Boolean logical operators. If you want to find only those cases that mention both dogs and cats, then your search would be something like "dog AND cat" (or "cat & dog"), while if you wanted to find all cases that mention both dogs and cats your search would be something like "dog OR cat"2 and if you want to find all those cases that do not mention dogs your search would be "NOT dog".3

One can also combine Boolean operations to perform more complicated searches. Thus, for example, if one wants to find all those cases, and only those cases, that contain the word "cat" or contain the word "dog", but do not contain not both those words, then one's search would look something like this "(cat OR dog) AND NOT (cat AND dog)". That particular operation is known as "exclusive or" and it is often written "XOR", though that name is not recognized by Lexis or Westlaw.

Now computers at their most fundamental levels perform the same sort of logical Boolean operations on binary digits. For example, if bit one equals "1" and bit two equals "1", then bit one AND bit two equals "1", while if bit one equals "1" and bit two equals "0", then bit one AND bit two equals "0".

The easiest way to understand these logical operations is in terms of "truth tables", where the binary digits are interpreted as "True" (or "T") and "False" (or "F" ). Then, for example, the truth table for AND and the one for OR are:

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants

These operations are performed by a computer upon individual bits, but normally they are performed upon eight or sixteen or thirty-two bits at a time. Thus, performing the AND operation upon "11111000" and "00011111" would yield the byte "00011000", while performing the OR operation would yield the byte "11111111".

Besides the operation of moving a bit from one place in memory to another and the logical Boolean operations, there is one other type of operation that can be performed at the most basic level by a digital computer, and that is an

_______________________

2 Westlaw unfortunately allows one to make this search by entering "dog cat"; this is most unfortunate since in most representations of Boolean logic, "dog cat" means "dog AND cat", not "dog OR cat".

3 I don't recommend that last search, for it would turn up way too many cases.

February 3, 1997


1.1. CAUTION: THIS BOOK MAY BE DANGEROUS!!!             17

IF THEN operation. Thus a program may contain and instruction that IF a certain bit is set to "1", THEN load the instruction at location 30003 into the central processing unit, rather than the next instruction (which happens to be at location 20002).

The entire power of the computer lies in its ability to perform millions of these simple operations in a very short period of time, and to perform them exactly the same way each time that the same program is run.

But all of this has been very abstract, so let us turn to a particular example, which turns out to create legal problems.

1.1.3.2 My Cryptographic Program as a Particular Example

1.1.3.2.1 XORing Two Files In order to show how a simple computer program works, I wrote the tiny encryption program that I did not dare quite describe in the article that I sent to the RISKS list.1 What it does is take a byte from a file that one wants to encrypt, which traditionally is called the "plaintext", and XORs the bits in that byte with the bits in a byte taken from another file,which traditionally is called the "key" or the "one-time pad".2 The output of this process is called the encrypted message. If the bits in the key are truly random,3 then the bits in the encrypted message will also be completely random and undecypherable by anyone who does not have the key.

On the other hand, the recipient has the key4 and can decipher the message by the simple process of XORing the bits in the encrypted message together with those in the key. The most interesting aspect of the XOR operation is that, if one performs that operation on A and B to form A*B, then, if one performs the operation again on B and A*B, it will result simply in the recovery of A in its original form.5 Thus the XOR operation is exactly what one needs to encrypt plain text using a one-time pad and to decrypt the message using the same key.

_________________________

1 See, supra Section 1.1.1.

2 It is called a one-time pad because, if the bits in the pad are random, the encryption will be theoretically unbreakable if the pad is not used more than once; the name is also derived from the fact that the use of one-time pads existed long before computers were invented, originally they were pads of paper on each page of which was written a random group of letters for use in encrypting and decrypting messages.

3 Whatever that means.

4 The two problems with the use of one-time pads as keys is that the recipient has to have a copy of the key before the message is sent and that the key has to be at least as long as the encrypted mesSage. If one is going to send a lot of long encrypted messages, then the recipient is going to have to have lots of long keys.

5 If you don't believe me, try it for yourself.


18                                                                           CHAPTER 1. INTRODUCTION

To assist you in visualizing how XOR works, here is its truth table:

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants

The algorithm--that is, the recipe--that is implemented by my program is remarkably simple: here it is.

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants

The source code implementing this algorithm is set out in Section 1.1.3.2.2 below. Now, that algorithm, and the source code, and, of course, the actual machine code, are all clearly included in the definition of cryptographic software that, according to the ITAR, cannot be exported--or published--without a license. But, as you will recall, I was still able to post the machine code that was produced by running my source code through the MASM assembler, to the RISKS list; I simply encrypted it, using my encryption program, into the first paragraph of my article. That encrypted version of the machine code is shown in Figure 1.1. I did not have to worry about any foreigner being able to decrypt the message and so obtain the forbidden information in my tiny program; though many of them could figure out how the encryption program worked and could write their own program that would work exactly the same way,7 they still could

_______________________

6 My program actually operates on bytes rather than bits, but that does not really change the algorithm. If you want to be completely precise, just substitute "eight bits" for "bit" throughout the algorithm.

7 Thus, for example, Paul C. Leyland of Oxford University Computing Services in the United Kingdom, posted an article to the sci.crypt newsgroup on August l9, 1994, in which he included the source code for a program in ANSI C that was only 107 characters long, a program that XORs the bits of two files together and could have been used to decrypt my encrypted program. That program appears, in human readable form, in Figure 1.4. (To fit the program into that figure, I did have to split the second line into two parts, which obscures the simple elegance of Dr. Leyland's programming style; still, that alteration should not have negative affects upon the functioning of the program.)

I am afraid that his article was posted by Dr. Leyland to demonstrate how silly are our regulations forbidding the publication of cryptographic software without a license; the sad thing is that, when I wrote him to ask for his permission to include his little program in these materials, I could not quote the text of the program, even to its author, because that author was a "foreign person".

February 3, 1997


1.1. CAUTION: THIS BOOK MAY BE DANGEROUS!!!             19

not decrypt the first paragraph of the article without the key, which is shown in UUENCODEd8 form in Figure 1.5. And I would make the key available only to those who would certify that they were citizens of the United States.

That neatly solved the problem presented by the ITAR, but at the expense of keeping anyone from being able to play with my silly little program.

The whole problem with the ITAR is that its guardians--pretend to?-- confuse cryptographic devices with descriptions of how cryptographic devices work. It is as if the ITAR allowed the exportation of rocks, but forbade one to publish information about how to throw rocks at people, or at rabbits.

There would be no serious constitutional issue if the government were to forbid the exportation (without a license) of machines capable of running my little program or similar programs.9 But to allow the exportation of the machines, while forbidding the publication of information about how they work, would seem to violate the First Amendment to our constitution.

A more difficult issue is whether the government can prohibit the publication of the actual machine code that runs on a computer. On the one hand, such code contains information that may be of interest to human readers; on the other hand, it also contains the functionality of a machine. It is hard to say that "functionality" itself is speech, but the publication of useful information-- information that is particularly useful as a means of implementing one's constitutional right to privacy--clearly does seem to be speech, and protected speech at that.

1.1.3.2.2 Here Is the Source Code. Here is the source code for my little encryption program. It is written in 8086 assembly language and is intended to be assembled with the MASM assembler.

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants

_________________________

8 It was necessary to encode the key in some way, to allow it to be printed out or viewed on a computer screen; the key--like the actual machine code--contains many bytes that would give a printer or a screen caniption fits. The UUENCODE program is one that takes a stream of bits and converts them into the ASCII codes that are acceptable to printers, screens, and mailing programs.

Query whether the UUENCODE and UUDECODE programs are cryptographic software that may not be published under the ITAR?

9 Of course, that would mean that they would have to forbid the exportation of every PC clone ever made.


20                                                                           CHAPTER 1. INTRODUCTION

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants


February 3, 1997


1.1. CAUTION: THIS BOOK MAY BE DANGEROUS!!!             21

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants


22                                                                           CHAPTER 1. INTRODUCTION

DELETED 3 April 1997 at request of attorneys for Plaintiff and
Defendants

1.1.4 Challenges to the ITAR's Provisions about Cryptography

So there you see one of the reasons why this book cannot be exported or published or otherwise disclosed to foreign persons without my first obtaining permission from the Office of Defense Trade Controls. And yet that little program is hardly complicated, except perhaps for the portions that have to do with creating and opening files. In fact, you should be able to run the program in your head--perhaps with the assistance of a pen and a piece of paper.l And when you do run that program in your head, is the program running there the same as the text of the program that sits peacefully in your casebook, not doing anything at all?

_________________________

1 And we will perform that exercise in class.

After all, it wasn't that long ago that encryption was done using one-time pads of paper containing lots of random letters.

Classically, a one-time pad is nothing more than a large nonrepeating set of truly random key letters, written on sheets of paper, and glued together in a pad.

BRUCE SCHNEIER, APPLIED CRYPTOGRAPHY 15 (2d ed.) Each letter was assigned a number, with A equaling 1 and Z equaling 26; the number of a letter in the plain text was added (modulo 26) to the number of the corresponding letter on the pad, and that sum was the value of the encrypted character. The process was so simple that I have actually seen Army officers perform it. And the only difference between using a classic one-time pad and my little cryptographic program, is that my program only recognizes two characters and therefore does the addition modulo two. (For addition modulo is the same operation as our old friend XOR.)

February 3, 1997


[End Computers and the Law]


4 April 1997

Date: Fri, 04 Apr 1997 22:11:24 -0500
To: cypherpunks@toad.com
From: John Young <jya@pipeline.com>
Subject: Prior Restraint

As noted here on April 2, we've put on our Web site several of the docs of the Peter Junger suit against the Secretary of State:

http://jya.com/pdj.htm

One gives parts of Peter's article "Computers and the Law" which includes machine-readable code, code which is prohibited by the EAR from being placed on the Internet without a license (it is this "prior restraint" that Peter is challenging):

http://jya.com/pdj003b.htm

When Peter saw that I had put the article and code on my site, he telephoned immediately to say that the article should not have been sent to me along with the other material. He asked that it be removed because electronic publication could harm his case and put me at risk of prosecution.

After discussion I declined to remove it, and thanked him for his advice.

Yesterday, Raymond Vasvari, one of Peter's three attorneys, called to politely ask that I remove the doc. And further explained how its electronic publication could harm the case and put me at risk.

He said that he had notified Anthony Coppolino, DoJ, that the document was on the Web, as he was obliged to do by procedural rules. That they had discussed the ramifications. He did not say what DoJ intended to do.

And, that he was obliged as an attorney to advise me to retain an attorney for my defense against prosecution for placing the doc on the Web.

During this discussion with Mr. Vasvari I checked the access log for the prohibited doc and saw that DoJ had accessed it as well as several other files on me and my org.

I told Mr. Vasvari this and he again advised me to remove the doc. Again, I declined.

After chewing on this restraint of my publication by the attorneys, I decided to delete only the machine-readable code from Peter's article, leaving the text which explains why the electronic publication of the code is the crux of Peter's First Amendment case. On the assumption that his prior restraint claim is more important than mine.

Take at look and let me know what you think. Should I have deleted the code or left it in the public domain where it belongs? Am I right to comply with the attorneys' first claim on prior restraint?

Meanwhile, anyone worldwide who wants the article with the code intact, send me an email <jya@pipeline.com> for instructions on how to get it.

Use the subject: Restraint